# -*- coding: utf-8 -*-
# @Time        :2024/10/31 下午5:45
# @Author      :文刀水寿
# @File        : 04_数据计算_sortBy.py
"""
 @Description :对RDD的数据进行排序，基于你指定的排序依据
 语法：
    rdd.sortBy(func, ascending=False, numPartitions=1)
    func: 告知按照rdd中那个数据进行排序，比如 lambda x: x[1]，表示按照rdd中的第二列元素进行排序
    ascending True升序 False降序
    numPartitions：用多少分区排序
"""
from pyspark import SparkConf, SparkContext
import os

os.environ['PYSPARK_PYTHON'] = "D:/Python/python.exe"

conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
sc = SparkContext(conf=conf)

# 2. 读取数据文件
rdd = sc.textFile("D:/spark案例1.txt")

# 3. 取出全部单词
rdd2 = rdd.flatMap(lambda x: x.split(" "))

# 4. 将所有单词都转换成二元元组，单词为key，values设置为1
rdd3 = rdd2.map(lambda world: (world, 1))

# 5. 分组求和
rdd4 = rdd3.reduceByKey(lambda a, b: a + b)

# 6. 对结果进行排序
rdd5 = rdd4.sortBy(lambda x: x[1], ascending=False, numPartitions=1)
print(rdd5.collect())
